
/********** VALIDAR LAS FECHAS DESDE HASTA **************************/
Ext.apply(Ext.form.VTypes, {
    daterange : function(val, field) {
        var date = field.parseDate(val);
        if(!date){
            return;
        }
        if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
            var start = Ext.getCmp(field.startDateField);
            start.setMaxValue(date);
            start.validate();
            this.dateRangeMax = date;
        }
        else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
            var end = Ext.getCmp(field.endDateField);
            end.setMinValue(date);
            end.validate();
            this.dateRangeMin = date;
        }
        return true;
    }
});/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var ID_DNI = "";
var ID_tipoarea = "";
Ext.onReady(onReadyCallAreas);
function onReadyCallAreas()
{
    ID_tipoarea=cogerVariable("idtipoarea");
    if(ID_tipoarea !="" && ID_tipoarea != undefined )
    {
        readControls_Login();
      //  ID_DNI = ValidarSessionUsuario();
        //  var DNI_return =  "";
        var AddResultItinerarios = new Ext.data.Connection();
        AddResultItinerarios.request({
            url: URLWebService + '/SessionActive',
            params: {
                    tiposession: 'usuario'
                    },
            method: 'POST',
            scope: this,
            callback: function(options, success, response){
            if (success){
                var xml = response.responseText;
                var re = /\n/;
                xml = xml.replace(re, '');
                re = /\r/;
                xml = xml.replace(re, '');
                var ObjectRes =  Ext.decode(xml);
                ObjectRes= ObjectRes.MensajeResultado;
                var return_Estado = ObjectRes.ESTADO;
                var return_Mensaje = ObjectRes.MENSAJE ;
                var return_ID_RETURN = ObjectRes.ID_RETURN ; /* dni usuario */
                var return_TIPO_RETURN = ObjectRes.TIPO_RETURN ; /* usuario - empresa */
                NombreLogin  = ObjectRes.DETALLE ;
                    if(parseInt(return_Estado) == 1)
                    {
                        if(return_TIPO_RETURN == "usuario")
                            {
                                 ID_DNI = return_ID_RETURN;
                            }

                    }
                    CalendarReserva(ID_tipoarea);
          }
          }
        });
        
    }
    else
    {
        location.href="index.jsp";
    }
}

function cogerVariable(variable){
    var tipo = typeof variable;
    var direccion = location.href;

    if (tipo == "string"){
        var posicion = direccion.indexOf("?");
        posicion = direccion.indexOf(variable,posicion) + variable.length;
    }
    else if (tipo == "number"){
        var posicion=0;
        for (var contador = 0 ; contador < variable + 1 ; contador++){
            posicion = direccion.indexOf("=",++posicion);
            if (posicion == -1)posicion=999;
        }
    }
    if (direccion.charAt(posicion) == "="){
        var final = direccion.indexOf("&",posicion);
        if (final == -1){final=direccion.length;};
        return direccion.substring(posicion + 1,final);
    }
}
var CReserva;
var tmptest;
var dataStore;

function CalendarReserva(v_idtipo){


	var buttonx1= new Ext.menu.Item({id: 'buttonx1_task', iconCls:'x-calendar-month-btnmv_task',	text: "Custom menu test 1"});
	var buttonx2= new Ext.menu.Item({id: 'buttonx2_task',iconCls:'x-calendar-month-btnmv_task',	text: "Custom menu test 2"});

	var buttonz1= new Ext.menu.Item( {id: 'buttonz1_task', iconCls:'x-calendar-month-btnmv_task',	text: "Custom action 1"});
	var buttonz2= new Ext.menu.Item( {id: 'buttonz2_task',iconCls:'x-calendar-month-btnmv_task',	text: "Custom action 2"});

	var boton_daytimertask  = new Ext.menu.Item({id: 'btnTimerTask', iconCls:'task_time', text: "Set Task Alarm...."});
	var boton_daytimertaskb = new Ext.menu.Item({id: 'btnTimerOff' , iconCls:'task_time_off', text: "Delete Task's Alarm...."});
	var button_sched_1= new Ext.menu.Item({id: 'buttonx1_task',iconCls:'x-calendar-month-btnmv_task',text: "Custom menu  on sched test 1"});
	var button_sched_2= new Ext.menu.Item({id: 'buttonx2_task',iconCls:'x-calendar-month-btnmv_task',text: "Custom menu  on sched test 2"});

    dataStore = new Ext.data.JsonStore({
         root: 'Reservas',
         //totalProperty: 'oTotReg',
            id: '__id',
            fields: ['IdReserva',
                    'fechaHasta','fechaDesde',
                    'fechaRegistro','estado',
                    'Color',
                    'total', 'Detalle',
                    'usuario.Dni',
                    'usuario.Nombres',
                    'usuario.Apellidos',
                    'empresaarea.IdEmpresaArea',
                    'empresaarea.Nombre',
                    'empresaarea.Descripcion',
                    'empresaarea.Imagen',
                    'empresaarea.Precio',
                    'empresaarea.Direccion'
                ],
       url: URLWebService + '/ListarReservas',
       baseParams: {
           method:   'post',
            idarea: v_idtipo
       },
        remoteSort: true,
        timeout : 5000

    });
       dataStore.on('beforeload', function() {
            dataStore.baseParams = {
                 idarea: v_idtipo
            };
        });
         dataStore.load({callback: function(records,o,s){
                              CReserva.refreshCalendarView();
                        }});
        dataStore.on('exception', function(obj, type, action, options, response, arg){
            handleError(type, response);
        });

	//var calendarstoretest= new Ext.data.Store({reader:reader,data:dummyData });
	tmptest= new Ext.ECalendar({});  // for use functions in calendar.js
	var weekrange = tmptest.getDateRangeOfWeekByDate(0,new Date());
	CReserva = new Ext.ECalendar({
		bodyBorder:true,
		id:'calendarReserva',
		name:'calendarReserva',
		bodyBorder:true,
		header:false,
		title:'Areas Deportivas Reservadas',
		mytitle:' 001',
		height:520,
                width:630,
		fieldsRefer:{ //0.0.11
			id:'IdReserva',
			subject:'usuario.Dni',
			description:'Detalle',
			color:'Color',//------
			startdate:'fechaDesde',
			enddate:'fechaHasta',
			priority:'estado',
			parent:'usuario.Dni',
			html:'empresaarea.Nombre',
			location:'empresaarea.IdEmpresaArea',
                        alldaytask:'total' ,
                        isHoliday:'Detalle'
		},
		storeOrderby:'usuario.Dni', 	//0.0.11
		storeOrder:'DESC',		//0.0.11
		showCal_tbar: true,
		showRefreshbtn:true,
		currentView: 'month',
		currentdate: new Date(),
		dateSelector: true,
		dateSelectorIcon: 'images/date.png',
		dateSelectorIconCls: 'x-cmscalendar-icon-date-selector',
		dateformat :'d-m-Y',
		iconCls: 'x-cmscalendar-icon-main',
		dateSelector:true,
		store:dataStore,
		monitorBrowserResize:true,
		widgetsBind: {bindMonth:null,bindDay:null,binWeek:null},
		tipmaxLength: 200, 		//0.0.15
		tplTaskTip : new Ext.XTemplate(
		'<tpl for="."><br />{starxl}{startval}<br/>{endxl}{endval}<hr color=\'#003366\'noshade><br/>{details}<br/></tpl>'
    	),
		tplTaskZoom: new Ext.XTemplate(
		'<tpl for=".">',
			'<div class="ecal-show-basetasktpl-div"><b>Subject:</b>{subject}<br>',
			'<b>Starts:</b>{startdate}<br><b>Ends:</b>{enddate}',
			'<br><b>Details:</b><div><hr><div>{description}<div><hr>',
		'</tpl>'
		),
		iconToday:'images/cms_calendar.png',
		iconMonthView:'images/calendar_view_month.png',
		iconWeekView:'images/calendar_view_week.png',
		iconDayView:'images/calendar_view_day.png',
		//iconSchedView:'images/calendar_view_schedule.png', //0.0.10  // NEW :)
		loadMask:true, //0.0.12  we dont need this saple here cause all the data is loaded its suits better  for Serverside loading
		customMaskText:'Reserva Area<br>Espere un momento...!<br>Procesando informacion.', //0.0.12
		//-------------------------------------------
		mview:{
			header: true,
			headerFormat:'F-Y',
			headerUseTpl:true,
			headerTpl: new Ext.XTemplate('<tpl for=".">{title} - {datetouse:this.fmtfecha}</tpl>',
				{
					fmtfecha:function(value){
						return value.format('d/m/Y');
					}
			}),
			headerData:{
				title:'Reserva tu Area Deportiva - Vista Mensual ',
				datetouse:new Date()
			},
			headerButtons: true,
			dayAction:'viewday',    //dayAction: //viewday , event, window
			//moreMenuItems:[buttonx1,buttonx2], /* botones del menu principal ***/
			showTaskcount: false,
			startDay:0,
			taskStyle:'margin-top:2px;', //Css style for text in day(if it has tasks and showtaskcount:true)
			showTaskList: true,
			showNumTasks:10,
			TaskList_launchEventOn:'click', //0.0.11
			TaskList_tplqTip: new Ext.XTemplate( '<tpl for=".">{location}{starxl}{startval}<br>{endxl}{endval}<hr color=\'#003366\' noshade><br/>{details}<br/></tpl>' ), //0.0.11
			ShowMenuItems:[1,1,1,1,1,0],  //0.0.11  - ADD, nextmonth, prevmonth, chg Week , CHG Day, chg Sched,
			//TaskList_moreMenuItems:[buttonz1,buttonz2], 	  //0.0.11
			TaskList_ShowMenuItems:[1,1,1]//0.0.11 	- Add, DELETE, EDIT
		},
		wview:{
			headerlabel:'Week #',
			headerButtons: true,
			dayformatLabel:'D j',
			headerUseTpl:true,					//0.0.15 new property to adapt the title header customizable
			headerTpl: new Ext.XTemplate('<tpl for=".">{title}-Desde {initday:this.formatx} Hasta {enday:this.formatx}</tpl>',{formatx:function(value){return value.format('d/m/Y');}}),
			headerData:{title:'Reserva tu Area Deportiva - Vista Semanal ', initday:weekrange[0],enday:weekrange[1]},
			//moreMenuItems:[buttonx1,buttonx2], /* botones del menu principal ***/
			style: 'google',
			hourFormat: 'G:i',
			alldayTaksMore:'window',
			alldayTasksMaxView:6,
			taskAdd_timer_dblclick:true, 	//0.0.15
			scrolltoHour:true,
			startTime: '10:00:00 am',
			endTime:   '10:00:00 pm',
			store: null,
			task_width:25,
			tasksOffset:40,
			headerDayClick:'viewday',
			ShowMenuItems:[1,1,1,1,1,0],	//0.0.11  add, go next w , go prev w ,  chg month , chg day, chg sched
			task_ShowMenuItems:[1,1,1,1,1], //0.0.11  add, delete, edit, go next w , go prev w
			task_eventLaunch:'dblclick',		//0.0.11
			startDay:0, //sundays   0.0.14
			task_clsOver:'test_taskovercss',
			forceTaskFit:true, // 0.0.14
			allday24HinsideBody:true
		},
		dview:{
			header:true,
			headerFormat:'l - d - F  - Y',
			headerUseTpl:true,		//0.0.15 new property to adapt the title header customizable
			headerTpl: new Ext.XTemplate('<tpl for=".">{title}-{datetouse:this.formatx}</tpl>',	{
				formatx:function(value){return value.format('l - d / F  / Y');}
			}),			//0.0.15
			headerData:{title:'Reserva tu Area Deportiva - Vista Por Dia ',	datetouse:new Date()},				//0.0.15
			headerButtons: true,
			moreMenuItems:[],
			// day specific
			hourFormat: 'G:i',
			startTime: '10:00:00 am',
			endTime:   '10:00:00 pm',
			// task settings
			store: null,
			task_increment:1,
			taskBaseColor: '#ffffff',
			task_useBorderStyle:true,	  		// 0.0.15 (on day and week bodies for the moment)
			task_useBordercolor:'#225588',		// 0.0.15 companion property for task_useBorderStyle
			task_width:68,
			tasksOffset:'5',
			taskAdd_dblclick: true,				//added on 0.0.7
			taskAdd_timer_dblclick:true,		//0.0.11
			useMultiColorTasks: false,
			multiColorTasks:[],
			tasks:[],
			//moreMenuItems:[	boton_daytimertask,	boton_daytimertaskb	],
			task_clsOver:'test_taskovercss',
			ShowMenuItems:[1,1,1,1,1,0],		//0.0.11 ADD, next day, prev day , chg Month , CHG Week, chg Sched, (for daybody menu)
			task_DDeditable:true, 			    //0.0.11
			task_eventLaunch:'dblclick',  		//0.0.11 'click, dblclick, if set to '' then no action is taken
			task_ShowMenuItems:[1,1,1,1,1],		//0.0.11 ADD, delete, edit, Next day , Prev Day  (for Taks/events)
			customHTMLinpos:'before',			//0.0.13  Feature request
			forceTaskFit: false					//0.0.14
		}
	});

	//dayClick only event on this object
	CReserva.viewmonth.on({
		'dayClick':{
				fn: function(datex, mviewx, calx) {
					//alert ("dayclick event for " + datex);
				},
				scope:this
		},
		'beforeMonthChange':{
				fn: function(currentdate,newdate) {
					CReserva.viewmonth.headerData.datetouse=newdate;
					return true;
				},
				scope:this
		},
		'afterMonthChange':{
				fn: function(newdate) {
					//alert ("Month changed to " + newdate.format('m/Y') ) ;
				},
				scope:this
		}
	});
	CReserva.viewweek.on({
		'dblClickTaskAllDay':{
				fn: function(task,dxview,calendar) {

				},
				scope:this
		},
		'beforeWeekChange':{
			fn: function (currentDate, newDate){
					var testdate=CReserva.viewweek.getDatesforWeek(newDate);
					CReserva.viewweek.headerData.enday=testdate[1];
					CReserva.viewweek.headerData.initday	=testdate[0];
					return true;
			}
		},
		'afterWeekChange':{
			fn: function(newdate){
				return false;
			}
		}
	});
	//'beforeDayChange' and  'afterDayChange' unique events on day view
	CReserva.viewday.on({
		'beforeDayChange':{
				fn: function(currentdate, newdate) {
					CReserva.viewday.headerData.datetouse=newdate;
					return true;
				},
				scope:this
		},
		'afterDayChange':{
				fn: function(newdate) {
					//alert ("changed to " + newdate.format('m/d/Y'));
				},
				scope:this
		}
	});
	CReserva.on({
                'onRefresh': {
				fn: function(refview,datatask,showItems,myactions) {
					//alert('ss');
				}
		},
//		'beforeContextMenuTask': {
//				fn: function(refview,datatask,showItems,myactions) {
//						 return true;
//				}
//		},
// 		this code it's not necessary
//		'beforeChangeDate': { //Ok revison made
//			fn: function( newdate , calobj){
//				//return false;
//			}
//		},
		'beforeChangeView':{ // Ok revision made
				fn: function (newView,OldView,calendarOBJ){
					if (newView==OldView){
						return false;
					}
					//var r=confirm("Change from " + OldView + " to " + newView);
					//return r;
				},scope:this
		},
//		'beforeTaskDelete': {
//				fn: function (datatask,dxview) {
//					return false;
//					// do your stuff to check if the event/task could be deleted
//				}, scope:this
//		},
//		'beforeTaskEdit': {
//				fn: function (datatask,dxview) {
//					return false;
//				}, scope:this
//		},
		'beforeTaskMove':{
				fn: function (datatask,Taskobj,dxview,TaskEl) { // return "true" to cancel or "false" to go on

                                        var task = datatask;
                                        var dnitask = String(task[2]);
                                        /*verificar si el usuario existe y si las reservas es del usuario */
                                        var dniVal = String(ID_DNI);
                                        if(dniVal != "")
                                        {
                                            if(dniVal == dnitask)
                                                {
                                                    return true;
                                                }else
                                                    {
                                                         Ext.Msg.alert('Alerta'  , 'No tiene permisos para editar esta reserva.');
                                                        return false;
                                                    }
                                        }else
                                            {
                                                Ext.Msg.alert('Alerta'  , 'Ingrese al Sistema');
                                                 return false;
                                            }
				}, scope:this
		},
		'afterChangeDate':{
			fn: function( newdate , calobj){
				//alert ("Date changed to:" + newdate.format('d-m-Y'));
			}
		},
		'onChangeView':{
			fn: function(newView, oldView, calobj){
				//Ext.get("samplebox_cview").update("<b>Current View:</b> " + newView);
                               // alert('onChangeView' + newView + '-' + oldView);
			},scope: this
		},
		'taskAdd':{
				fn: function( datex ) {
					//alert ("Adding Task for " + datex);
                                        //ShowFormNuevaReserva(datex);
                                          var dniVal = String(ID_DNI);
                                        if(dniVal != "")
                                        {
                                           ShowFormNuevaReserva(datex);
                                        }else
                                            {
                                                Ext.Msg.alert('Alerta'  , 'Ingrese al Sistema para poder reservar');
                                                 return false;
                                            }

				}
		},
		'taskDblClick':{
				fn: function (task,dxview,calendar,refviewname,record){
                                        var dni = task[2];
                                        var datatest='<table width="200px" style="width:300px;"><tr><td align="left" ><b>Usuario:</b></td><td align="left" >' + dni + '</td></tr>';
					//datatest+='id-task:'  + task[1] + ' ' + task[2] + '<br>';
					datatest+='<tr><td align="left" ><b>Desde:</b></td><td align="left" >'    + task[3] + '</td></tr>';
 					datatest+='<tr><td align="left" ><b>Hasta:</b></td><td align="left" >'   + task[4] + '</td></tr>';
 					datatest+='<tr><td align="left" ><b>Monto Total:</b></td><td align="left" > S/. '  + task[8] + '</td></tr>';
					datatest+='<tr><td align="left" ><b>Detalle:</b> </td><td align="left" >'     + task[9] + '</td></tr></table>';
					//datatest+='Location: '     + task[7] + '<br>';

					Ext.Msg.alert('Detalle Reserva'  , datatest);
				},
				scope:this
		},
		'onTaskDelete':{
			fn:function(datatask){
//				var r=confirm("Delete event " + datatask[1] + " " + datatask[2] + "...? YES/NO" );
//				return r;
//
                                var task = datatask;
                                var dnitask = String(task[2]);
                                /*verificar si el usuario existe y si las reservas es del usuario */
                                var dniVal = String(ID_DNI);
                                if(dniVal != "")
                                {
                                    if(dniVal == dnitask)
                                        {
                                            ShowPopupDeleteReserva(String(task[1]));
                                        }else
                                            {
                                                 Ext.Msg.alert('Alerta'  , 'No tiene permisos para eliminar esta reserva.');
                                                return false;
                                            }
                                }else
                                    {
                                        Ext.Msg.alert('Alerta'  , 'Ingrese al Sistema');
                                         return false;
                                    }



				// do your stuf for deletion and return the value
			},scope:this
		},
	   'afterTaskDelete':{
	   		fn: function(datatask,action){
				//action ? alert("Event: " + datatask[1] + " " + datatask[2] + " Deleted"): alert("Event Delete was canceled..!");
				// perform any action after deleting the event/task

			},scope:this
 	    },
	   'onTaskEdit':{
			fn:function(datatask){
                                var task = datatask;
                                var dnitask = String(task[2]);
                                /*verificar si el usuario existe y si las reservas es del usuario */
                                var dniVal = String(ID_DNI);
                                if(dniVal != "")
                                {
                                    if(dniVal == dnitask)
                                        {
                                            ShowFormEditarReserva(String(task[1]));
                                        }else
                                            {
                                                 Ext.Msg.alert('Alerta'  , 'No tiene permisos para editar esta reserva.');
                                                return false;
                                            }
                                }else
                                    {
                                        Ext.Msg.alert('Alerta'  , 'Ingrese al Sistema');
                                         return false;
                                    }
				// do your stuf for editing and return the value
			},scope:this
	    },
	    'afterTaskEdit':{
	   		fn: function(datatask,action){
				// perform any action after deleting the event/task
//				if (action){
//					alert("Event: " + datatask[1] + " " + datatask[2] + " Edited");
//				} else {
//					alert("Event Edit was canceled..!");
//				}
//				return false;
			},scope:this
	    },
		'TaskMoved':{
				fn: function (newDataTask,Taskobj,dxview,TaskEl) {   // do some stuff
					var test=21;  // use breakpoint in firefox here
					var task = newDataTask;
                                        var dnitask = String(task[2]);
                                        /*verificar si el usuario existe y si las reservas es del usuario */
                                        var dniVal = String(ID_DNI);
                                        if(dniVal != "")
                                        {
                                            if(dniVal == dnitask)
                                                {
                                                     /* actualizar la reserva */
                                                       Ext.MessageBox.show({
                                                           msg: 'Actualizando los Datos , por favor espere...',
                                                           progressText: 'Actualizando...',
                                                           width:300,
                                                           wait:true//,
                                                           //waitConfig: {interval:200}//,
                                                           //icon:'ext-mb-download', //custom class in msg-box.html
                                                           //animEl: 'mb7'
                                                     });
                                                     var AddResultItinerarios = new Ext.data.Connection();
                                                        AddResultItinerarios.request({
                                                            url: URLWebService + '/UpdateReserva',
                                                            params: {
                                                                        tipoupdate:'fecha',
                                                                        idreserva:String(task[1]),
                                                                        fechadesde:String(task[3]),
                                                                        fechahasta:String(task[4])
                                                                    },
                                                            method: 'POST',
                                                            scope: this,
                                                            callback: function(options, success, response){
                                                            if (success){
                                                                 Ext.MessageBox.hide();
                                                                var xml = response.responseText;
                                                                var re = /\n/;
                                                                xml = xml.replace(re, '');
                                                                re = /\r/;
                                                                xml = xml.replace(re, '');
                                                                var ObjectRes =  Ext.decode(xml);
                                                               // var ObjectRes= Ext.util.JSON.encode(xml);
                                                                ObjectRes= ObjectRes.MensajeResultado;
                                                                var return_Estado = ObjectRes.ESTADO;
                                                                var return_Mensaje = ObjectRes.MENSAJE ;
                                                                Ext.MessageBox.show({
                                                                   title: 'Resultado',
                                                                   msg: return_Mensaje,
                                                                   buttons: Ext.MessageBox.OK,
                                                                   fn: function(){
                                                                    if(return_Estado == 1)
                                                                    {
                                                                          dataStore.load({callback: function(records,o,s){
                                                                                  CReserva.refreshCalendarView();
                                                                            }});
                                                                    }else
                                                                    {
                                                                    }

                                                                   }
                                                               });
                                                          }
                                                          }
                                                        });
                                            /******************************************************************/
                                                }else
                                                    {

                                                    }
                                        }else
                                            {
                                              //  Ext.Msg.alert('Alerta'  , 'Ingrese al Sistema');
                                            }


                                                  
//					var myrecordtask = CReserva.store.getAt( (parseInt(task[6])-1) ); //Alert...!   base number of index are 1  not 0
//					myrecordtask.set('startdate',task[3] );
//					myrecordtask.set('enddate',task[4] );
//					CReserva.store.commitChanges();

				}, scope:this
		},
		'customMenuAction':{
				fn: function (MenuId, Currentview,datatask,objEl,dxview){
					var datatest = '';
                                        var task;
                                        var dni;
					if (Currentview=='month'){
						task = datatask;
                                                dni = task[2];
                                                  datatest='<table width="200px" style="width:300px;"><tr><td align="left" ><b>Usuario:</b></td><td align="left" >' + dni + '</td></tr>';
                                                    //datatest+='id-task:'  + task[1] + ' ' + task[2] + '<br>';
                                                    datatest+='<tr><td align="left" ><b>Desde:</b></td><td align="left" >'    + task[3] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Hasta:</b></td><td align="left" >'   + task[4] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Monto Total:</b></td><td align="left" > S/. '  + task[8] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Detalle:</b> </td><td align="left" >'     + task[9] + '</td></tr></table>';
                                                    //datatest+='Location: '     + task[7] + '<br>';


                                                Ext.Msg.alert('Detalle Reserva'  , datatest);
					} else if (Currentview=='day'){
						task = datatask;
                                                dni = task[2];
                                                 datatest='<table width="200px" style="width:300px;"><tr><td align="left" ><b>Usuario:</b></td><td align="left" >' + dni + '</td></tr>';
                                                    //datatest+='id-task:'  + task[1] + ' ' + task[2] + '<br>';
                                                    datatest+='<tr><td align="left" ><b>Desde:</b></td><td align="left" >'    + task[3] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Hasta:</b></td><td align="left" >'   + task[4] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Monto Total:</b></td><td align="left" > S/. '  + task[8] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Detalle:</b> </td><td align="left" >'     + task[9] + '</td></tr></table>';
                                                    //datatest+='Location: '     + task[7] + '<br>';

                                                Ext.Msg.alert('Detalle Reserva'  , datatest);
					} else if (Currentview=='week'){
						task = datatask;
                                                dni = task[2];
                                                datatest='<table width="200px" style="width:300px;"><tr><td align="left" ><b>Usuario:</b></td><td align="left" >' + dni + '</td></tr>';
                                                    //datatest+='id-task:'  + task[1] + ' ' + task[2] + '<br>';
                                                    datatest+='<tr><td align="left" ><b>Desde:</b></td><td align="left" >'    + task[3] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Hasta:</b></td><td align="left" >'   + task[4] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Monto Total:</b></td><td align="left" > S/. '  + task[8] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Detalle:</b> </td><td align="left" >'     + task[9] + '</td></tr></table>';
                                                    //datatest+='Location: '     + task[7] + '<br>';

                                                Ext.Msg.alert('Detalle Reserva'  , datatest);
					} else if (Currentview=='scheduler'){
						task = datatask;
                                                dni = task[2];
                                                 datatest='<table width="200px" style="width:300px;"><tr><td align="left" ><b>Usuario:</b></td><td align="left" >' + dni + '</td></tr>';
                                                    //datatest+='id-task:'  + task[1] + ' ' + task[2] + '<br>';
                                                    datatest+='<tr><td align="left" ><b>Desde:</b></td><td align="left" >'    + task[3] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Hasta:</b></td><td align="left" >'   + task[4] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Monto Total:</b></td><td align="left" > S/. '  + task[8] + '</td></tr>';
                                                    datatest+='<tr><td align="left" ><b>Detalle:</b> </td><td align="left" >'     + task[9] + '</td></tr></table>';
                                                    //datatest+='Location: '     + task[7] + '<br>';

                                                Ext.Msg.alert('Detalle Reserva'  , datatest);
					}
				},scope:this
		}

	});
	CReserva.render('calendar');

           
      // CReserva.refreshCalendarView();
	Ext.EventManager.onWindowResize( function(){CReserva.refreshCalendarView();});
}

function handleError(type, response){
    switch (type)
    {
        case 'remote':
            alert(response.raw.errors);
            break;
        case 'response':
            if ((response.isTimeout !== undefined) && (response.isTimeout === true))
            {
                alert('The request has timed out. Please try again.')
            }
            else
            {
                alert('An unexpected error has occured.');
            }
            break;
    }
}

function ValidarSessionUsuario()
 {
   var DNI_return =  "";
    var AddResultItinerarios = new Ext.data.Connection();
    AddResultItinerarios.request({
        url: URLWebService + '/SessionActive',
        params: {
                tiposession: 'usuario'
                },
        method: 'POST',
        scope: this,
        callback: function(options, success, response){
        if (success){
            var xml = response.responseText;
            var re = /\n/;
            xml = xml.replace(re, '');
            re = /\r/;
            xml = xml.replace(re, '');
            var ObjectRes =  Ext.decode(xml);
            ObjectRes= ObjectRes.MensajeResultado;
            var return_Estado = ObjectRes.ESTADO;
            var return_Mensaje = ObjectRes.MENSAJE ;
            var return_ID_RETURN = ObjectRes.ID_RETURN ; /* dni usuario */
            var return_TIPO_RETURN = ObjectRes.TIPO_RETURN ; /* usuario - empresa */
                if(parseInt(return_Estado) == 1)
                {
                    if(return_TIPO_RETURN == "usuario")
                        {
                             DNI_return = return_ID_RETURN;
                        }
                   
                }
      }
      }
    });
    return DNI_return;
 }

 /********** FORM PANEL PARA EDITAR LA RESERVA******************************************/
var winIti ;
var panelContentIti ;

function ShowFormEditarReserva(IdReserva)
{
    try
    {
        //fechaSel
      var record =  dataStore.getAt(dataStore.find('IdReserva',IdReserva));

      /* validar si la reserva ya esta confirmada */
      var estadoConf = record.data.estado;
      if(String(estadoConf)== "2")
          {
               Ext.Msg.alert('Alerta'  , 'La reserva ya fue confirmada. No puede editar.');
               return false;
          }


      var dni_ = record.data['usuario.Dni'];
      var fecha_ = record.data.fechaDesde;
      var detalle_ = record.data.Detalle;
        //var fecha = Ext.util.Format.date(fechaSel, 'd/m/Y g:i a');
        var fechaSel = Ext.util.Format.date(fecha_, 'd/m/Y');
      //  alert(fechaSel);

    var var_hora_sal_edit =  record.data.fechaDesde.substring(11,16);

    var var_hora_ret_edit = record.data.fechaHasta.substring(11,16);



     var txtusuario = new Ext.form.TextField({
        name: 'txtusuario',
        id: 'txtusuario',
        fieldLabel: 'Usuario',
        allowBlank:false,
        readOnly: true,
        value:dni_,
        align:'left',
        width:170
    });
	 var txtdetalle = new Ext.form.TextArea({
        name: 'txtdetalle',
        id: 'txtdetalle',
        fieldLabel: 'Detalle',
        allowBlank:true,
        value:detalle_,
        readOlny: true,
        align:'left',
        width:360
    });
	 /********** CREAR LA FECHA SALIDA *****************/
    var  startDateEdit= new Ext.form.DateField ({
        name: 'startDateEdit',
        id: 'startDateEdit',
        width : 100,
        value:fechaSel,
        format : "d/m/Y",
        //vtype: 'daterange',
        //endDateField: 'endDateEdit' ,
        fieldLabel:'Fecha Desde',
        allowBlank:false,
        altFormats : "d/m/y",
        readOnly:true

    });
    var startDate_hora = new Ext.form.TimeField({
              fieldLabel:'Hora Desde',
                name: 'startDate_hora',
                id: 'startDate_hora',
                //format : 'g:i a',
                value:var_hora_sal_edit,
              format:"H:i a",
                width:100 ,
                increment: 60,
                editable:false,
                 minValue: '10:00am',
                 maxValue: '22:00pm',
                        allowBlank:false
        });
    /********** CREAR LA FECHA RETORNO *****************/

  //  endDateEdit.setValue(fechaSel + 1 );
    var endDate_hora = new Ext.form.TimeField({
              fieldLabel:'Hora Hasta',
                name: 'endDate_hora',
                id: 'endDate_hora',
               format:"H:i a",
               value:var_hora_ret_edit,
                minValue: '10:00am',
                 maxValue: '22:00pm',
                width:100 ,
                increment: 60,
                editable:false,
                        allowBlank:false

        });



    /*********************/
           if (!winIti) {

            panelContentIti = new Ext.form.FormPanel({
                labelWidth: 75,
                xtype: 'panel',
                frame:true,
                region:'center',
                layout: 'form',
                bodyStyle:'padding:5px 5px 0',
                width: 480,
                 items: [

                      {
                        layout:'column',
                        items:[
                        {
                            columnWidth: .6,
                            layout: 'form',
                            items: [txtusuario]
                        }
                         ,
                        {
                            columnWidth:.4,
                            layout: 'form'
                        } ]
                    } ,
                    {
                        layout:'column',
                        items:[
                        {
                            columnWidth: .5,
                            layout: 'form',
                            items: [startDateEdit]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: 'form'//,
                          //  items: [ startDate_hora ]
                        } ]
                    } ,
                      {
                        layout:'column',
                        items:[
                        {
                            columnWidth: .5,
                            layout: 'form',
                            items: [startDate_hora]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: 'form',
                            items: [ endDate_hora ]
                        } ]
                    } ,
                    txtdetalle ,
                     {
                        layout:'column',
                        items:[
                        {
                            columnHeight:.2,
                            layout: 'form'
                        }
                         ]
                    }
                ],
                   buttons: [{
                    text: 'Guardar',
                    id:'btnSave',
                    handler: function()
                    {
                        if(!panelContentIti.getForm().isValid())
                        {
                          return false;
                        }

                        var _txtusuario=  Ext.get('txtusuario').dom;
                        var _txtdetalle=  Ext.get('txtdetalle').dom;
                        var _startDateEdit =  Ext.get('startDateEdit').dom;
                        var _startDate_hora =  Ext.get('startDate_hora').dom;
                      //  var _endDateEdit =  Ext.get('endDateEdit').dom;
                        var _endDate_hora =  Ext.get('endDate_hora').dom;

                        if(_txtusuario.value == "")
                        {
                            _txtusuario.focus();
                                Ext.MessageBox.alert('Mensaje', 'Faltan ingresar datos!.');
                            return false;
                        }

                        if(_startDateEdit.value == "")
                        {
                            _startDateEdit.focus();
                                Ext.MessageBox.alert('Mensaje', 'Faltan ingresar datos!.');
                            return false;
                        }
//                        if(_endDateEdit.value == "")
//                        {
//                            _endDateEdit.focus();
//                                Ext.MessageBox.alert('Mensaje', 'Faltan ingresar datos!.');
//                            return false;
//                        }

//                        if(!_startDateEdit.validate())
//                        {
//                            _startDateEdit.focus();
//	                        Ext.MessageBox.alert('Mensaje', 'Campo incorrecto!.');
//                            return false;
//                        }

//                        if(!_endDateEdit.validate())
//                        {
//                            _endDateEdit.focus();
//	                        Ext.MessageBox.alert('Mensaje', 'Campo incorrecto!.');
//                            return false;
//                        }
                        _startDateEdit =   _startDateEdit.value;
                        _startDate_hora = _startDate_hora.value;
                        var iLen_e = String(_startDate_hora).length;
                        var s_hora_em_ = String(_startDate_hora).substring(iLen_e, iLen_e - 2).toUpperCase().trim();
                        var new_hora_em =String(_startDate_hora).substring(0, iLen_e - 2) ;
                        var HIni_In= new_hora_em;
                        if(s_hora_em_ == 'AM') {new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,"") + ':00 am' ;}
                        else{new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,"") + ':00 pm' ;}

                       _endDate_hora = _endDate_hora.value;
                        var iLen_ef = String(_endDate_hora).length;
                        var s_hora_fin_ = String(_endDate_hora).substring(iLen_ef, iLen_ef - 2).toUpperCase().trim();
                        var new_hora_fin =String(_endDate_hora).substring(0, iLen_ef - 2) ;
                        var HFin_In= new_hora_fin;
                        if(s_hora_fin_ == 'AM') {new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,"") + ':00 am' ;}
                        else{new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,"") + ':00 pm' ;}
                           /**********************************/

 
	var fec = _startDateEdit.split("/");
        var horai = HIni_In.split(":");
        var horaf =  HFin_In.split(":");
	var dat1 = new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horai[0]),parseFloat(horai[1]),00);
	var dat2 =  new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horaf[0]),parseFloat(horaf[1]),00);

	var fin = dat2.getTime() - dat1.getTime();

        var horasVal = parseFloat(fin);
        if(horasVal <= 0)
            {
                   Ext.MessageBox.alert('Mensaje', 'La fecha hasta debe ser mayor a la fecha desde!.');
                   return false;
            }
	var Nro_Horas = Math.floor(fin / (1000 * 60 * 60 ));

/** verificar si existe una reserva en esa fecha */
   var objec = dataStore;
   var fec_v = fec[1] + '/' + fec[0] + '/' + fec[2];
   var horaI_v = _startDate_hora.substring(0, 2);
   var horaF_v = _endDate_hora.substring(0, 2);
    var estPrue= false;
    for(var i = 0; i <  objec.getCount(); i = i +1)
    {
        var fechaDesdeV =objec.data.get(i).data.fechaDesde ;
        var fechaHastaV =objec.data.get(i).data.fechaHasta ;
        var id_reservV =objec.data.get(i).data.IdReserva ;
        var fechaDesde_ =fechaDesdeV.substring(0, 10) ;

  //var record =  dataStore.getAt(dataStore.find('IdReserva',IdReserva));
       
        if(fechaDesde_ == fec_v)
        {
             var horaCompletaIni_v =fechaDesdeV.substring(11, 13);
             var horaCompletaFin_v =fechaHastaV.substring(11, 13);

             var horaIrecord =parseInt(record.data.fechaDesde.substring(11, 13));
             var horaFrecord =parseInt(record.data.fechaHasta.substring(11, 13));
//             alert(parseInt(horaI_v) +' >= ' +parseInt(horaIrecord) +' && ' + parseInt(horaI_v) +' <= ' +
//                 parseInt(horaFrecord)+' && ' + parseInt(horaF_v)+' >= ' + parseInt(horaIrecord)+' && ' + parseInt(horaF_v)+' <= ' +
//                 parseInt(horaFrecord));
             if((parseInt(horaI_v) >= parseInt(horaIrecord)) && (parseInt(horaI_v) <= parseInt(horaFrecord)) && (parseInt(horaF_v) >= parseInt(horaIrecord)) && (parseInt(horaF_v) <= parseInt(horaFrecord)))
                 {

                     estPrue= false;
                     break;
                 }

               if(parseInt(id_reservV) != parseInt(IdReserva))
                   {
                        if(parseInt(horaI_v) == parseInt(horaCompletaIni_v))
                         {
                             estPrue = true; /**existe */
                             break;
                         }
                       if(parseInt(horaF_v) == parseInt(horaCompletaFin_v))
                         {
                             estPrue = true; /**existe */
                             break;
                         }
                        if((parseInt(horaI_v) > parseInt(horaCompletaIni_v)) && (parseInt(horaI_v) < parseInt(horaCompletaFin_v)) )
                         {
                             estPrue = true; /**existe */
                             break;
                         }
                          if((parseInt(horaF_v) > parseInt(horaCompletaIni_v)) && (parseInt(horaF_v) < parseInt(horaCompletaFin_v)) )
                         {
                             estPrue = true; /**existe */
                             break;
                         }

                   }

        }
    }
      if(estPrue)
            {
                   Ext.MessageBox.alert('Mensaje', 'En la hora seleccionada ya existe una reserva!.');
                   return false;
            }
	//return dias;
     Ext.MessageBox.show({
       msg: 'Guardando los Datos , por favor espere...',
       progressText: 'Guardando...',
       width:300,
       wait:true//,
       //waitConfig: {interval:200}//,
       //icon:'ext-mb-download', //custom class in msg-box.html
       //animEl: 'mb7'
 });

 var AddResultItinerarios = new Ext.data.Connection();
                    AddResultItinerarios.request({
                        url: URLWebService + '/UpdateReserva',
                        params: {
                                tipoupdate:'reserva',
                                fechadesde: String(_startDateEdit + ' ' + new_hora_em),
                                fechahasta: String(_startDateEdit + ' ' +new_hora_fin),
                                dni:_txtusuario.value.replace(/^\s*|\s*$/g,""),
                                idempresaarea: String(ID_tipoarea),
                                horas:String(Nro_Horas),
                                detalle:_txtdetalle.value.replace(/^\s*|\s*$/g,""),
                                idreserva: String(IdReserva)
                                },
                        method: 'POST',
                        scope: this,
                        callback: function(options, success, response){
                        if (success){
                              Ext.MessageBox.hide();
                            var xml = response.responseText;
                            var re = /\n/;
                            xml = xml.replace(re, '');
                            re = /\r/;
                            xml = xml.replace(re, '');
                            var ObjectRes =  Ext.decode(xml);
                            ObjectRes= ObjectRes.MensajeResultado;
                            var return_Estado = ObjectRes.ESTADO;
                            var return_Mensaje = ObjectRes.MENSAJE ;
                            Ext.MessageBox.show({
                               title: 'Resultado',
                               msg: return_Mensaje,
                               buttons: Ext.MessageBox.OK,
                               fn: function(){
                                if(return_Estado == 1)
                                {
                                    winIti.close();
                                      dataStore.load({callback: function(records,o,s){
                                              CReserva.refreshCalendarView();
                                        }});
                                   // CReserva.refreshCalendarView();
                                }else
                                {
                                }

                               }
                           });
                      }
                      }
                    });

                      
                    }
                    }, {
                    text: 'Cancelar',
                    handler: function(){
                       winIti.close();
                    }
                 }]
            });
            winIti = new Ext.Window({
                title: 'EDITAR RESERVA',
                id:'winIti' ,
                closable: false,
                resizable: false,
                hideParent :false,
                autoScroll:true,
                closeAction: 'close',
                width: 500,
                border:false,
                modal:true,
                plain: true,
                autoScroll:true,
                listeners:{show:function() {
                    this.loadMask = new Ext.LoadMask(this.body, {
                        msg:'Espere por favor...'
                    });
                }} ,
                items: [panelContentIti]
            });
            
           winIti.on('beforehide',destroyProjectWindowIti);
       }
        winIti.show();
    }
    catch(err){
        alert(err.description);
    }
}

function destroyProjectWindowIti() {
	if (winIti != null) {
		winIti = null;
	}
}
 /********** FORM PANEL PARA NUEVA RESERVA******************************************/
var winNuevReserva ;
var panelContentNewreserva ;

function ShowFormNuevaReserva(fechaSel)
{
    try
    {
        //var fecha = Ext.util.Format.date(fechaSel, 'd/m/Y g:i a');
        var fechaSel = Ext.util.Format.date(fechaSel, 'd/m/Y');
      //  alert(fechaSel);
    //var var_fecha_sal = fecha.substring(0,10);
//    var var_hora_sal =  var_fecha_sal_.substring(11,var_fecha_sal_.lenght);
//    var var_hora_sal_AP =  var_fecha_sal_.substring(16,var_fecha_sal_.lenght);
//    var_hora_sal =var_hora_sal.substring(0,5).trim() + ' ' + replaceAll(var_hora_sal_AP,'.','').toUpperCase().trim();

 //   var var_fecha_ret = fecha.substring(0,10);
//    var var_hora_ret = var_fecha_ret_.substring(11,var_fecha_ret_.lenght);
//    var var_hora_ret_AP =  var_fecha_ret_.substring(16,var_fecha_ret_.lenght);
//    var_hora_ret =var_hora_ret.substring(0,5).trim() + ' ' + replaceAll(var_hora_ret_AP,'.','').toUpperCase().trim();
    var d_fecha = new Date();
    d_fecha.setDate(d_fecha.getDate()+3);
    d_fecha = Ext.util.Format.date(d_fecha, 'd/m/Y');

     var txtusuario = new Ext.form.TextField({
        name: 'txtusuario',
        id: 'txtusuario',
        fieldLabel: 'Usuario',
        allowBlank:false,
        readOnly: true,
        value:ID_DNI,
        align:'left',
        width:170
    });
	 var txtdetalle = new Ext.form.TextArea({
        name: 'txtdetalle',
        id: 'txtdetalle',
        fieldLabel: 'Detalle',
        allowBlank:true,
        readOlny: true,
        align:'left',
        width:360
    });
	 /********** CREAR LA FECHA SALIDA *****************/
    var  startDateEdit= new Ext.form.DateField ({
        name: 'startDateEdit',
        id: 'startDateEdit',
        width : 100,
        value:fechaSel,
        format : "d/m/Y",
        minValue:String(d_fecha),
        //vtype: 'daterange',
        //endDateField: 'endDateEdit' ,
        fieldLabel:'Fecha Desde',
        allowBlank:false,
        altFormats : "d/m/y"

    });
    var startDate_hora = new Ext.form.TimeField({
              fieldLabel:'Hora Desde',
                name: 'startDate_hora',
                id: 'startDate_hora',
                //format : 'g:i a',
              format:"H:i a",
                width:100 ,
                increment: 60,
                editable:false,
                 minValue: '10:00am',
                 maxValue: '22:00pm',
                        allowBlank:false
        });
    /********** CREAR LA FECHA RETORNO *****************/
    var endDateEdit= new Ext.form.DateField ({
        name: 'endDateEdit',
        id: 'endDateEdit',
        width : 100,
        //vtype: 'daterange',
       // startDateField: 'startDateEdit',
        fieldLabel:'Fecha Hasta',
        value:fechaSel,
        format : "d/m/Y",
        allowBlank:false,
        altFormats : "d/m/y"

    });
  //  endDateEdit.setValue(fechaSel + 1 );
    var endDate_hora = new Ext.form.TimeField({
              fieldLabel:'Hora Hasta',
                name: 'endDate_hora',
                id: 'endDate_hora',
               format:"H:i a",
                minValue: '10:00am',
                 maxValue: '22:00pm',
                width:100 ,
                increment: 60,
                editable:false,
                        allowBlank:false

        });



    /*********************/
           if (!winNuevReserva) {

            panelContentNewreserva = new Ext.form.FormPanel({
                labelWidth: 75,
                xtype: 'panel',
                frame:true,
                region:'center',
                layout: 'form',
                bodyStyle:'padding:5px 5px 0',
                width: 480,
                 items: [

                      {
                        layout:'column',
                        items:[
                        {
                            columnWidth: .6,
                            layout: 'form',
                            items: [txtusuario]
                        }
                         ,
                        {
                            columnWidth:.4,
                            layout: 'form'
                        } ]
                    } ,
                    {
                        layout:'column',
                        items:[
                        {
                            columnWidth: .5,
                            layout: 'form',
                            items: [startDateEdit]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: 'form'//,
                          //  items: [ startDate_hora ]
                        } ]
                    } ,
                      {
                        layout:'column',
                        items:[
                        {
                            columnWidth: .5,
                            layout: 'form',
                            items: [startDate_hora]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: 'form',
                            items: [ endDate_hora ]
                        } ]
                    } ,
                    txtdetalle ,
                     {
                        layout:'column',
                        items:[
                        {
                            columnHeight:.2,
                            layout: 'form'
                        }
                         ]
                    }
                ],
                   buttons: [{
                    text: 'Guardar',
                    id:'btnSave',
                    handler: function()
                    {
                        if(!panelContentNewreserva.getForm().isValid())
                        {
                          return false;
                        }

                        var _txtusuario=  Ext.get('txtusuario').dom;
                        var _txtdetalle=  Ext.get('txtdetalle').dom;
                        var _startDateEdit =  Ext.get('startDateEdit').dom;
                        var _startDate_hora =  Ext.get('startDate_hora').dom;
                      //  var _endDateEdit =  Ext.get('endDateEdit').dom;
                        var _endDate_hora =  Ext.get('endDate_hora').dom;

                        if(_txtusuario.value == "")
                        {
                            _txtusuario.focus();
                                Ext.MessageBox.alert('Mensaje', 'Faltan ingresar datos!.');
                            return false;
                        }

                        if(_startDateEdit.value == "")
                        {
                            _startDateEdit.focus();
                                Ext.MessageBox.alert('Mensaje', 'Faltan ingresar datos!.');
                            return false;
                        }
//                        if(_endDateEdit.value == "")
//                        {
//                            _endDateEdit.focus();
//                                Ext.MessageBox.alert('Mensaje', 'Faltan ingresar datos!.');
//                            return false;
//                        }

//                        if(!_startDateEdit.validate())
//                        {
//                            _startDateEdit.focus();
//	                        Ext.MessageBox.alert('Mensaje', 'Campo incorrecto!.');
//                            return false;
//                        }

//                        if(!_endDateEdit.validate())
//                        {
//                            _endDateEdit.focus();
//	                        Ext.MessageBox.alert('Mensaje', 'Campo incorrecto!.');
//                            return false;
//                        }
                        _startDateEdit =   _startDateEdit.value;
                        _startDate_hora = _startDate_hora.value;
                        var iLen_e = String(_startDate_hora).length;
                        var s_hora_em_ = String(_startDate_hora).substring(iLen_e, iLen_e - 2).toUpperCase().trim();
                        var new_hora_em =String(_startDate_hora).substring(0, iLen_e - 2) ;
                        var HIni_In= new_hora_em;
                        if(s_hora_em_ == 'AM') {new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,"") + ':00 am' ;}
                        else{new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,"") + ':00 pm' ;}

                       _endDate_hora = _endDate_hora.value;
                        var iLen_ef = String(_endDate_hora).length;
                        var s_hora_fin_ = String(_endDate_hora).substring(iLen_ef, iLen_ef - 2).toUpperCase().trim();
                        var new_hora_fin =String(_endDate_hora).substring(0, iLen_ef - 2) ;
                        var HFin_In= new_hora_fin;
                        if(s_hora_fin_ == 'AM') {new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,"") + ':00 am' ;}
                        else{new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,"") + ':00 pm' ;}
                           /**********************************/

 
	var fec = _startDateEdit.split("/");
        var horai = HIni_In.split(":");
        var horaf =  HFin_In.split(":");
	var dat1 = new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horai[0]),parseFloat(horai[1]),00);
	var dat2 =  new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horaf[0]),parseFloat(horaf[1]),00);

	var fin = dat2.getTime() - dat1.getTime();

        var horasVal = parseFloat(fin);
        if(horasVal <= 0)
            {
                   Ext.MessageBox.alert('Mensaje', 'La fecha hasta debe ser mayor a la fecha desde!.');
                   return false;
            }
	var Nro_Horas = Math.floor(fin / (1000 * 60 * 60 ));

/** verificar si existe una reserva en esa fecha */
   var objec = dataStore;
   var fec_v = fec[1] + '/' + fec[0] + '/' + fec[2];
   var horaI_v = _startDate_hora.substring(0, 2);
   var horaF_v = _endDate_hora.substring(0, 2);
    var estPrue= false;
    for(var i = 0; i <  objec.getCount(); i = i +1)
    {
        var fechaDesdeV =objec.data.get(i).data.fechaDesde ;
        var fechaHastaV =objec.data.get(i).data.fechaHasta ;
        var fechaDesde_ =fechaDesdeV.substring(0, 10) ;

        if(fechaDesde_ == fec_v)
        {
             var horaCompletaIni_v =fechaDesdeV.substring(11, 13);
             var horaCompletaFin_v =fechaHastaV.substring(11, 13);

             if(parseInt(horaI_v) == parseInt(horaCompletaIni_v))
                 {
                     estPrue = true; /**existe */
                     break;
                 }
               if(parseInt(horaF_v) == parseInt(horaCompletaFin_v))
                 {
                     estPrue = true; /**existe */
                     break;
                 }
                if((parseInt(horaI_v) > parseInt(horaCompletaIni_v)) && (parseInt(horaI_v) < parseInt(horaCompletaFin_v)) )
                 {
                     estPrue = true; /**existe */
                     break;
                 }
                  if((parseInt(horaF_v) > parseInt(horaCompletaIni_v)) && (parseInt(horaF_v) < parseInt(horaCompletaFin_v)) )
                 {
                     estPrue = true; /**existe */
                     break;
                 }
        }
    }
      if(estPrue)
            {
                   Ext.MessageBox.alert('Mensaje', 'En la hora seleccionada ya existe una reserva!.');
                   return false;
            }
            


	//return dias;
     Ext.MessageBox.show({
       msg: 'Guardando los Datos , por favor espere...',
       progressText: 'Guardando...',
       width:300,
       wait:true//,
       //waitConfig: {interval:200}//,
       //icon:'ext-mb-download', //custom class in msg-box.html
       //animEl: 'mb7'
 });

 var AddResultItinerarios = new Ext.data.Connection();
                    AddResultItinerarios.request({
                        url: URLWebService + '/InsertReserva',
                        params: {
                                fechadesde: String(_startDateEdit + ' ' + new_hora_em),
                                fechahasta: String(_startDateEdit + ' ' +new_hora_fin),
                                dni:_txtusuario.value.replace(/^\s*|\s*$/g,""),
                                idempresaarea: String(ID_tipoarea),
                                horas:String(Nro_Horas),
                                detalle:_txtdetalle.value.replace(/^\s*|\s*$/g,"")
                                },
                        method: 'POST',
                        scope: this,
                        callback: function(options, success, response){
                        if (success){
                              Ext.MessageBox.hide();
                            var xml = response.responseText;
                            var re = /\n/;
                            xml = xml.replace(re, '');
                            re = /\r/;
                            xml = xml.replace(re, '');
                            var ObjectRes =  Ext.decode(xml);
                            ObjectRes= ObjectRes.MensajeResultado;
                            var return_Estado = ObjectRes.ESTADO;
                            var return_Mensaje = ObjectRes.MENSAJE ;
                            Ext.MessageBox.show({
                               title: 'Resultado',
                               msg: return_Mensaje,
                               buttons: Ext.MessageBox.OK,
                               fn: function(){
                                if(return_Estado == 1)
                                {
                                    winNuevReserva.close();
                                      dataStore.load({callback: function(records,o,s){
                                              CReserva.refreshCalendarView();
                                        }});
                                   // CReserva.refreshCalendarView();
                                }else
                                {
                                }

                               }
                           });
                      }
                      }
                    });

                      
                    }
                    }, {
                    text: 'Cancelar',
                    handler: function(){
                       winNuevReserva.close();
                    }
                 }]
            });
            winNuevReserva = new Ext.Window({
                title: 'NUEVA RESERVA',
                id:'winEditItinerario' ,
                closable: false,
                resizable: false,
                hideParent :false,
                autoScroll:true,
                closeAction: 'close',
                width: 500,
                border:false,
                modal:true,
                plain: true,
                autoScroll:true,
                listeners:{show:function() {
                    this.loadMask = new Ext.LoadMask(this.body, {
                        msg:'Espere por favor...'
                    });
                }} ,
                items: [panelContentNewreserva]
            });
            
           winNuevReserva.on('beforehide',destroyProjectWindowNewReserva);
       }
        winNuevReserva.show();
    }
    catch(err){
        alert(err.description);
    }
}

function destroyProjectWindowNewReserva() {
	if (winNuevReserva != null) {
		winNuevReserva = null;
	}
}

/***** FORM PARA ELIMINAR LA RESERVA ***/
 function ShowPopupDeleteReserva(IdReserva)
 {
    var record =  dataStore.getAt(dataStore.find('IdReserva',IdReserva));
      var estadoConf = record.data.estado;
      if(String(estadoConf)== "2")
          {
               Ext.Msg.alert('Alerta'  , 'La reserva ya fue confirmada. No puede eliminar.');
               return false;
          }

    Ext.Msg.show({
        title:'Alerta',
        msg: 'Desea eliminar la Reserva: "'+ record.data.Detalle +'" ?',
        buttons: Ext.Msg.YESNO,
        fn:function(btn)
        {
            if(btn=='yes')
            {
                   /**********************************/
                     Ext.MessageBox.show({
                       msg: 'Procesando , por favor espere...',
                       progressText: 'Eliminando...',
                       width:300,
                       wait:true//,
                       //waitConfig: {interval:200}//,
                       //icon:'ext-mb-download', //custom class in msg-box.html
                       //animEl: 'mb7'
                 });
                  var AddResultItinerarios = new Ext.data.Connection();
                    AddResultItinerarios.request({
                        url: URLWebService + '/DeleteReserva',
                        params: {
                                tipodelete: 'id',
                                idreserva:String(IdReserva)
                                },
                        method: 'POST',
                        scope: this,
                        callback: function(options, success, response){
                        if (success){
                              Ext.MessageBox.hide();
                            var xml = response.responseText;
                            var re = /\n/;
                            xml = xml.replace(re, '');
                            re = /\r/;
                            xml = xml.replace(re, '');
                            var ObjectRes =  Ext.decode(xml);
                            ObjectRes= ObjectRes.MensajeResultado;
                            var return_Estado = ObjectRes.ESTADO;
                            var return_Mensaje = ObjectRes.MENSAJE ;
                            Ext.MessageBox.show({
                               title: 'Resultado',
                               msg: return_Mensaje,
                               buttons: Ext.MessageBox.OK,
                               fn: function(){
                                if(return_Estado == 1)
                                {
                                      dataStore.load({callback: function(records,o,s){
                                              CReserva.refreshCalendarView();
                                        }});
                                       //  CReserva.refreshCalendarView();
                                }else
                                {
                                }

                               }
                           });
                      }
                      }
                    });
            }
            else{

            }
            }
     });
 }